package com.qdlc.p2p.dal.dto;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import com.qdlc.p2p.common.constant.Global;

/**
 * 商品实体类实体
 *
 * @author liya
 * @version 1.1.0.0
 */
@Entity
@Table(name = Global.DB_PREFIX + "goods")
public class Goods {

    /** 主键 */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    /** 商品名称 */
    private String name;

    /** 状态，0：待审核，1：审核通过，-1：审核未通过 */
    private int status;

    /** 商品类别 */
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "category_id")
    private GoodsCategory goodsCategory;

    /** 类型，0：待上架，1：已上架，-1：已下架 */
    private int type;

    /** 是否虚拟商品，0：不是，1：是 */
    private int isVirtual;

    /** 所需积分 */
    private int score;

    /** 商城售价 */
    private double cost;

    /** 市场价 */
    private double marketPrice;

    /** 商品库存 */
    private int store;

    /** 冻结库存 */
    private int freezeStore;

    /** 销量 */
    private int sellAcount;

    /** 图片路径 */
    private String picPath;

    /** 商品详情 */
    private String description;

    /** 商品属性信息 */
    private String attribute;

    /** 备注 */
    private String remark;

    /** 上架时间 */
    private Date shelvesTime;

    /** 添加时间 */
    private Date addTime;

    /** 添加者 */
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "add_operator_id")
    private Operator addOperator;

    /** 修改时间 */
    private Date updateTime;

    /** 修改者 */
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "update_operator_id")
    private Operator updateOperator;

    /** 审核时间 */
    private Date verifyTime;

    /** 审核人 */
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "verify_operator_id")
    private Operator verifyOperator;

    /** 审核备注 */
    private String verifyRemark;

    public Goods() {
        super();
    }

    public Goods(long id) {
        super();
        this.id = id;
    }

    /**
     * 获取商品id
     *
     * @return 商品id
     */
    public long getId() {
        return id;
    }

    /**
     * 设置商品id
     *
     * @param id 要设置的商品id
     */
    public void setId(long id) {
        this.id = id;
    }

    /**
     * 获取商品名称
     *
     * @return 商品名称
     */
    public String getName() {
        return name;
    }

    /**
     * 设置商品名称
     *
     * @param name 要设置的商品名称
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取状态，0：待审核，1：审核通过，-1：审核未通过
     *
     * @return 状态，0：待审核，1：审核通过，-1：审核未通过
     */
    public int getStatus() {
        return status;
    }

    /**
     * 设置状态，0：待审核，1：审核通过，-1：审核未通过
     *
     * @param status 要设置的状态，0：待审核，1：审核通过，-1：审核未通过
     */
    public void setStatus(int status) {
        this.status = status;
    }

    /**
     * 获取类型，0：待上架，1：上架，-1：下架
     *
     * @return 类型，0：待上架，1：上架，-1：下架
     */
    public int getType() {
        return type;
    }

    /**
     * 设置类型，0：待上架，1：上架，-1：下架
     *
     * @param type 要设置的类型，0：待上架，1：上架，-1：下架
     */
    public void setType(int type) {
        this.type = type;
    }

    /**
     * 获取是否虚拟商品，0：不是，1：是
     *
     * @return 是否虚拟商品，0：不是，1：是
     */
    public int getIsVirtual() {
        return isVirtual;
    }

    /**
     * 设置是否虚拟商品，0：不是，1：是
     *
     * @param isVirtual 要设置的是否虚拟商品，0：不是，1：是
     */
    public void setIsVirtual(int isVirtual) {
        this.isVirtual = isVirtual;
    }

    /**
     * 获取所需积分
     *
     * @return 所需积分
     */
    public int getScore() {
        return score;
    }

    /**
     * 设置所需积分
     *
     * @param score 要设置的所需积分
     */
    public void setScore(int score) {
        this.score = score;
    }

    /**
     * 获取商城售价
     *
     * @return 商城售价
     */
    public double getCost() {
        return cost;
    }

    /**
     * 设置商城售价
     *
     * @param cost 要设置的商城售价
     */
    public void setCost(double cost) {
        this.cost = cost;
    }

    /**
     * 获取市场价
     *
     * @return 市场价
     */
    public double getMarketPrice() {
        return marketPrice;
    }

    /**
     * 设置市场价
     *
     * @param marketPrice 要设置的市场价
     */
    public void setMarketPrice(double marketPrice) {
        this.marketPrice = marketPrice;
    }

    /**
     * 获取商品库存
     *
     * @return 商品库存
     */
    public int getStore() {
        return store;
    }

    /**
     * 设置商品库存
     *
     * @param store 要设置的商品库存
     */
    public void setStore(int store) {
        this.store = store;
    }

    /**
     * 获取冻结库存
     *
     * @return 冻结库存
     */
    public int getFreezeStore() {
        return freezeStore;
    }

    /**
     * 设置冻结库存
     *
     * @param freezeStore 要设置的冻结库存
     */
    public void setFreezeStore(int freezeStore) {
        this.freezeStore = freezeStore;
    }

    /**
     * 获取销售数量
     *
     * @return 销售数量
     */
    public int getSellAcount() {
        return sellAcount;
    }

    /**
     * 设置销售数量
     *
     * @param sellAcount 要设置的销售数量
     */
    public void setSellAcount(int sellAcount) {
        this.sellAcount = sellAcount;
    }

    /**
     * 获取图片路径
     *
     * @return 图片路径
     */
    public String getPicPath() {
        return picPath;
    }

    /**
     * 设置图片路径
     *
     * @param picPath 要设置的图片路径
     */
    public void setPicPath(String picPath) {
        this.picPath = picPath;
    }

    /**
     * 获取商品详情
     *
     * @return 商品详情
     */
    public String getDescription() {
        return description;
    }

    /**
     * 设置商品详情
     *
     * @param description 要设置的商品详情
     */
    public void setDescription(String description) {
        this.description = description;
    }

    /**
     * 获取商品属性信息
     *
     * @return 商品属性信息
     */
    public String getAttribute() {
        return attribute;
    }

    /**
     * 设置商品属性信息
     *
     * @param attribute 要设置的商品属性信息
     */
    public void setAttribute(String attribute) {
        this.attribute = attribute;
    }

    /**
     * 获取备注
     *
     * @return 备注
     */
    public String getRemark() {
        return remark;
    }

    /**
     * 设置备注
     *
     * @param remark 要设置的备注
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }

    /**
     * 获取上架时间
     *
     * @return 上架时间
     */
    public Date getShelvesTime() {
        return shelvesTime;
    }

    /**
     * 设置上架时间
     *
     * @param shelvesTime 要设置的上架时间
     */
    public void setShelvesTime(Date shelvesTime) {
        this.shelvesTime = shelvesTime;
    }

    /**
     * 获取添加时间
     *
     * @return 添加时间
     */
    public Date getAddTime() {
        return addTime;
    }

    /**
     * 设置添加时间
     *
     * @param addTime 要设置的添加时间
     */
    public void setAddTime(Date addTime) {
        this.addTime = addTime;
    }

    /**
     * 获取修改时间
     *
     * @return 修改时间
     */
    public Date getUpdateTime() {
        return updateTime;
    }

    /**
     * 设置修改时间
     *
     * @param updateTime 要设置的修改时间
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    /**
     * 获取审核时间
     *
     * @return 审核时间
     */
    public Date getVerifyTime() {
        return verifyTime;
    }

    /**
     * 设置审核时间
     *
     * @param verifyTime 要设置的审核时间
     */
    public void setVerifyTime(Date verifyTime) {
        this.verifyTime = verifyTime;
    }

    /**
     * 获取审核备注
     *
     * @return 审核备注
     */
    public String getVerifyRemark() {
        return verifyRemark;
    }

    /**
     * 设置审核备注
     *
     * @param verifyRemark 要设置的审核备注
     */
    public void setVerifyRemark(String verifyRemark) {
        this.verifyRemark = verifyRemark;
    }

    public GoodsCategory getGoodsCategory() {
        return goodsCategory;
    }

    public void setGoodsCategory(GoodsCategory goodsCategory) {
        this.goodsCategory = goodsCategory;
    }

    public Operator getAddOperator() {
        return addOperator;
    }

    public void setAddOperator(Operator addOperator) {
        this.addOperator = addOperator;
    }

    public Operator getUpdateOperator() {
        return updateOperator;
    }

    public void setUpdateOperator(Operator updateOperator) {
        this.updateOperator = updateOperator;
    }

    public Operator getVerifyOperator() {
        return verifyOperator;
    }

    public void setVerifyOperator(Operator verifyOperator) {
        this.verifyOperator = verifyOperator;
    }

}
